#!/usr/bin/python
# -*- coding: utf-8 -*-

import pexpect

#####################################################
#EL ERROR DE QUE NO EXISTE UNA CARPETA A CIFRAR SE DEBE VALIDAR DESDE LA INTERFAZ GRÁFICA
#ERROR DE QUE NO HAY PERMISOS SOBRE ESA CARPETA SE VALIDA DESDE LA INTERFAZ GRÁFICA
#ERROR DE QUE NO EXISTA LA CARPETA DONDE SE VA A MONTAR LA UNIDAD SE DEBE VALIDAR DESDE LA INTERFAZ GŔAFICA
#ERROR DE PERMISOS SOBRE LA CARPETA DONDE SE VA MONTAR LA UNIDAD SE DEBE VALIDAR DESDE LA INTERFAZ GRÁFICA
#ERROR DE MONTAR UNIDAD SOBRE UNA YA MONTADA: Hay que leer la información de ARCHIVO /ETC/MTAB y buscar si la carpeta ya está montada, Un usuario puede montar una misma unidad en diferentes carpetas y no hay problema 
#CREAR UNA NUEVA UNIDAD: Cuando se va a crear una nueva unidad el prompt devuelve vació, en la variable before y after uno peude determinar que mostró el prompt. No he encontrado la forma de hacer que el expetc acepte en la lista de opciones el valor vació, por eso es que lo que hago es capturar el error de TIMEOUT(Error que ocurre cuando el prompt no devuelve una opcion que se encuentre en la lista de opciones) y asumo que es creación de una nueva unidad. Hay que hacer pruebas y en base a eso hay que depurar mas posibles errores
#ERROR DE DESMONTAJE DE UNIDAD: fusermount: entry for /home/joger/temp not found in /etc/mtab
########################



unidad_cifrar = "/home/joger/temp-cif/"
punto_montaje = "/home/joger/temp/"

#Vamos a crear una particion
proceso = pexpect.spawn("encfs " + unidad_cifrar + " " + punto_montaje)
#Lista de opciones
##options=['Contraseña EncFS: ', pexpect.TIMEOUT, pexpect.EOF]
options=['Enter /home/joger/.tibisay/dbclaves/joger.dat: ', pexpect.TIMEOUT, pexpect.EOF]
#proceso.maxread=1000
resultado = proceso.expect(options,timeout=5)

print "Fino"
exit()

if resultado == 1:
    print "Entré opción 1"
    #try:
        #proceso.expect('')
        #proceso.sendline('w')
        #proceso.expect('Nueva contraseña EncFS: ')
        #proceso.sendline('12345678')
        #proceso.expect('Verifique la contraseña EncFS: ')
        #proceso.sendline('12345678')
    #except:
        #print "Buffer" + proceso.buffer + "***"
        #print "Before" + proceso.before + "***"

    #print "Buffer: " + str(proceso.buffer) + "***"
    print "Before: " + str(proceso.before) + "***"
    print "After: " + str(proceso.after) + "***"
    print "******************************************"
    print str(proceso)

elif resultado == 0:
    print "Entre opción 0"
    proceso.sendline('12345678')

    
elif resultado == 2:
    print "Entré opción 2"
    print "Buffer: " + str(proceso.buffer) + "***"
    print "Before: " + str(proceso.before) + "***"
    print "After: " + str(proceso.after) + "***"
    print "******************************************"
    print pexpect.EOF


print "Fin del programa ..."
